// 校验分类名称的唯一性
// 定义一个变量，来保存验证的结果
var flag = true
async function checkCateNameUniq() {
    // 获取分类名称数据
    const cate_name = $('input[name="cate_name"]').val();
    const id = $('input[name="id"]').val();
    const {
        data
    } = await axios({
        method: 'GET',
        url: '/cates/update/check',
        params: {
            id,
            cate_name
        }
    })
    if (data.status === 200) {
        flag = true
    } else {
        flag = false
    }
}

layui.use('form', function() {
    var form = layui.form;
    var layer = layui.layer
        // 自定义校验规则
    form.verify({
            // 验证分类名称的唯一性
            checkCateName: function(value) {
                if (!flag) {
                    return '分类名称重复'
                }
            },
            // 验证排序为正整数
            checkSort: function(value) {
                let sort_reg = /^[1-9]\d*$/
                if (!(sort_reg.test(value))) {
                    return '排序必须是正整数';
                }
            }
        })
        // 说明：因为表单的提交与否是根据最后一行的return false或者true的同步行为来控制的，而async 和await会把整个函数变成异步行为，所以此处不要用这种写法
    form.on('submit(formDemo)', function(data) {
        // 1.获取表单的数据
        const submitData = data.field // obj
            // 2.使用ajax来提交数据
        axios({
            method: 'put',
            url: `/cates/${submitData.id}`,
            data: submitData
        }).then(res => {
            const {
                data
            } = res
            // 异常
            if (data.status !== 200) {
                return layer.msg(data.msg, {
                    icon: 5,
                    time: 3000
                })
            }
            // 成功
            layer.msg('修改成功', {
                icon: 6,
                time: 2000
            }, function() {
                // 仅仅只能关闭打开的iframe层，但是页面数据并没有刷新
                var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                parent.layer.close(index); //再执行关闭
            })
        })
        return false; // 控制form中的action地址提交，false代表不提交表单，true代表提交表单
    })
});